package com.demo2_两数相加.test20240225;

class ListNode {
    int val;
    ListNode next;

    ListNode() {
    }

    ListNode(int val) {
        this.val = val;
    }

    ListNode(int val, ListNode next) {
        this.val = val;
        this.next = next;
    }

    @Override
    public String toString() {
        return "ListNode{" +
                "val=" + val +
                ", next=" + next +
                '}';
    }
}

public class Solution {
    public static void main(String[] args) {
        ListNode listNode2 = new ListNode(9, null);
        ListNode listNode1 = new ListNode(9, listNode2);
        ListNode listNode = new ListNode(1, listNode1);
        System.out.println("链表一:");
        System.out.println(listNode);

        ListNode listNode5 = new ListNode(9, null);
        ListNode listNode4 = new ListNode(5, listNode5);
        ListNode listNode3 = new ListNode(4, listNode4);

        System.out.println("链表二:");
        System.out.println(listNode3);
        //创建对象
        Solution ss = new Solution();
        ListNode listNode6 = ss.addTwoNumbers(listNode, listNode3);
        System.out.println("链表三: ");
        System.out.println(listNode6);

    }
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode result = new ListNode();
        // 指针P
        ListNode p = result;
        ListNode q =result;
        while (l1 != null || l2 != null) {
            // 指针p向后移动一位
            p=q;
            
            int value =0;

            value = p.val+value;

            if (l1!=null){
                value += l1.val;
            }
            if (l2!=null){
                value+=l2.val;
            }
            p.val = value%10;
            q = new ListNode(value/10,null);
            p.next = q;
            if (l1!=null){

                l1=l1.next;
            }
            if (l2!=null){

                l2=l2.next;
            }

        }
        // 处理最后一个结点. 如果最后一个结点是0,那么移除掉最后一个结点.
        if (q.val==0){
            p.next = null;
        }
        return result;
    }
}